//package com.qujia.station.utils;
//import com.qujia.coupon.service.ICouponIssueService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.connection.Message;
//import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
//import org.springframework.data.redis.listener.RedisMessageListenerContainer;
//import org.springframework.stereotype.Component;
///**
// * @Auther: LogicQin
// * @Date: 2023/7/26 14:39
// * @Description:
// */
//@Slf4j
//@Component
//public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
//
//    @Autowired
//    private ICouponIssueService couponIssueService;
//
//    // 把我们上面一步配置的bean注入进去
//    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
//        super(listenerContainer);
//    }
//
//
//    /**
//     * 针对redis数据失效事件，进行数据处理
//     *
//     * @param message
//     * @param pattern
//     */
//    @Override
//    public void onMessage(Message message, byte[] pattern) {
//        // 获取过期的 key
//        String expiredKey = message.toString();
//        log.info("onMessage --> Redis 过期的 key 是：{}", expiredKey);
//
//        // 检查过期的 key 是否以 "coupon:" 作为前缀
//        if (expiredKey.startsWith("coupon:")) {
//            try {
//                // 从 key 中提取优惠券的 ID
//                String couponIdStr = expiredKey.substring("coupon:".length());
//                Long issueId = Long.parseLong(couponIdStr);
//
//                // 使用提取到的优惠券 ID 调用 updateCouponStatus 方法来修改优惠券状态
//                couponIssueService.updateCouponStatus(issueId, "3");
//
//                log.info("过期 key 处理完成，优惠券 ID：{}", issueId);
//            } catch (NumberFormatException e) {
//                log.error("过期 key 的优惠券 ID 解析异常：{}", expiredKey, e);
//            } catch (Exception e) {
//                log.error("处理 Redis 过期的 key 异常：{}", expiredKey, e);
//            }
//        } else if(expiredKey.startsWith("activity:")){
//            try {
//                // 从 key 中提取优惠券的 ID
//                String couponIdStr = expiredKey.substring("activity:".length());
//                Long issueId = Long.parseLong(couponIdStr);
//
//                // 使用提取到的优惠券 ID 调用 updateCouponStatus 方法来修改优惠券状态
//                couponIssueService.updateCouponActivityStatus(issueId, "3");
//
//                log.info("过期 key 处理完成，优惠券 ID：{}", issueId);
//            } catch (NumberFormatException e) {
//                log.error("过期 key 的优惠券 ID 解析异常：{}", expiredKey, e);
//            } catch (Exception e) {
//                log.error("处理 Redis 过期的 key 异常：{}", expiredKey, e);
//            }
//        }
//    }
//}
